﻿using BLToolkit.DataAccess;
using BLToolkit.Mapping;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Devsoft.DB.Models;
using BLToolkit.Data;

namespace Platform.Model
{
    /// <summary>
    /// lớp biểu diễn siêu thị/khách hàng
    /// </summary>
    [TableName("Market")]
    public class Market : Devsoft.DB.Models.Flat.ModelWithIdAndManager<Market,MarketManager>
    {
        /// <summary>
        /// Mã số khách hàng đễ phân biệt trong CSDL
        /// </summary>
         [PrimaryKey, Identity]
        public int ID { get; set; }
        /// <summary>
        /// Tên khách hàng
        /// </summary>
        public string MarketName { get; set; }
        /// <summary>
        /// địa chỉ khách hàng
        /// </summary>
        public string Address { get; set; }
        /// <summary>
        /// Mã kho Platform
        /// </summary>
        public int WH { get; set; }
        /// <summary>
        /// lưu  Cấu hình 
        /// </summary>
        
        public string Options { get; set; }
        /// <summary>
        /// thời gian cập nhật cuối
        /// </summary>
        public DateTime LastUpdated { get; set; }
        /// <summary>
        /// Những kho hàng của khách hàng
        /// </summary>
        [Association(ThisKey = "Id", OtherKey = "MarketId", CanBeNull = false)]
        public List<Store> Stores { get; set; }
        /// <summary>
        /// những nhà cung cấp của khách hàng
        /// </summary>
        [Association(ThisKey = "Id", OtherKey = "MarketId", CanBeNull = false)]
        public List<Supplier> Suppliers { get; set; }
        /// <summary>
        /// những sản phẩm của  khách hàng đặt
        /// </summary>
        [Association(ThisKey = "Id", OtherKey = "MarketId", CanBeNull = false)]
        public List<Article> Articles { get; set; }
        /// <summary>
        /// các hóa đơn đặt hàng của khách hàng
        /// </summary>
        [Association(ThisKey = "Id",OtherKey = "MarketId",CanBeNull = false)]
        public List<DailyOrder> DailyOrders  { get; set; }
        
    }
    public abstract class MarketManager:Manager<Market>
    {
        public MarketManager(DbManager dbManager):base(dbManager)
        {
            
        }
        public abstract void DeletebyID(int id);

    }
}
